Skip to content

impl(sprint-11/wave-A): D-CSV-1 + D-CSV-3 + D-CSV-4 — causal-edge v2 + signed-mantissa NARS + CollapseGateEmission#383

Merged
AdaWorldAPI merged 7 commits into
mainfrom
claude/sprint-11-wave-a-impl
May 16, 2026
Merged

impl(sprint-11/wave-A): D-CSV-1 + D-CSV-3 + D-CSV-4 — causal-edge v2 + signed-mantissa NARS + CollapseGateEmission#383
AdaWorldAPI merged 7 commits into
mainfrom
claude/sprint-11-wave-a-impl

Conversation

@AdaWorldAPI
Copy link
Copy Markdown
Owner

Summary

Sprint-11 Wave A implementation landing the Phase A substrate primitives from cognitive-substrate-convergence-v1.md §6 Option F locked layout. Two parallel Sonnet workers (CCA2A) + main-thread P0 fix on the pack() temporal-corrupts-reclaim-zone bug surfaced in code review (same root cause as the W3 codex P1 from PR #381). Board hygiene included in the SAME PR per E-META-9 main-thread-sentinel doctrine.

OQ ratifications absorbed in this PR

  • OQ-CSV-2 = 6 bits (64-corpora W-slot) per plan §11 default recommendation
  • OQ-CSV-1 + OQ-CSV-4 deferred to Wave B (D-CSV-2 / D-CSV-5)

D-CSV-1 — causal-edge v2 layout (W-A1)

  • NEW crates/causal-edge/src/layout.rs (~130 LOC): all shift constants, masks, TrustTexture enum, compile-time _LAYOUT_COVERAGE const-assert verifying 8+8+8+8+8+3+3+4+3+6+2+3 = 64
  • EXTEND edge.rs: v2 accessors (inference_mantissa i4-signed, w_slot, truth, truth_raw, spare, with_routing(w, t)); pack_v2() 8-arg constructor (no temporal); #[deprecated] markers on v1 inference_type() + temporal()
  • NEW v2_layout_tests.rs (~200 LOC): 16 tests across signed-mantissa round-trip, field-isolation matrix, 2-arg with_routing, spare isolation, size_of == 8
  • Cargo bumped 0.1.0 → 0.2.0; default = ["causal-edge-v2-layout"]

D-CSV-3 — signed-mantissa InferenceType (W-A1, same crate)

  • InferenceType::to_mantissa(self) -> i8 and from_mantissa(m: i8) -> Self provide bidirectional v2 mapping while keeping the enum for v1 callers. PR-LL-1 Intervention/Counterfactual absorb into magnitudes 5/6 per L-9.

D-CSV-4 — CollapseGateEmission (W-A2, contract crate)

  • NEW pub type MailboxId = u32 — canonical W-slot corpus-root handle
  • NEW CollapseGateEmission { batons: Vec<(u16, u64)>, source_mailbox, chain_position, merge_mode }
  • Architectural deviation from plan §8.1 documented inline: Vec<(u16, u64)> instead of SmallVec<[(u16, CausalEdge64); 8]> to preserve the contract zero-dep invariant. SmallVec inline-storage optimization deferred to sprint-12+.
  • API: new / push_baton / baton_count / wire_cost_bytes (13 + 10 × N per plan §8.2 budget) + provenance accessors. No cycle_id field (provenance via source_mailbox + chain_position per §8.1).
  • 8 tests pass

P0 caught in main-thread code review

W-A1 initially left v1 pack() writing temporal << 52 even under v2 feature, corrupting the new reclaim zone (bit 52 = plasticity[2], bits 53-58 = W, bits 59-60 = lens, bits 61-63 = spare). Same root cause as the W3 spec codex P1 from PR #381 — v1 temporal aliases the v2 reclaim zone. Fixed by feature-gating the temporal write in pack() so v2 silently drops the arg with a doc-comment migration pointer to pack_v2. Two v1-only tests (test_roundtrip, test_temporal_in_msb_gives_sort_order) gated on #[cfg(not(feature = "causal-edge-v2-layout"))].

Pre-existing failure noted (not in scope)

causal_edge::tables::tests::test_build_fast fails on clean main under both feature configurations (confirmed via stash-revert). Unrelated to this PR's reclaim-zone scope. To be filed in ISSUES.md separately.

Board hygiene in this PR (per E-META-9)

  • STATUS_BOARD.md — D-CSV-1 / D-CSV-3 / D-CSV-4 transition Queued → In PR
  • AGENT_LOG.md — PREPEND wave-A fleet entry with P0-find + test-status detail

Test plan

  • cargo test -p causal-edge --features causal-edge-v2-layout — 30 pass / 1 pre-existing fail
  • cargo test -p causal-edge --no-default-features — 16 pass / 1 pre-existing fail
  • cargo test -p lance-graph-contract collapse_gate — 8/8 pass
  • cargo check -p lance-graph-planner — clean with deprecation warnings (intended)
  • cargo check -p p64-bridge — clean with deprecation warning (intended)
  • Wave B planning: spawn qualia-engineer agent cross-check on OQ-CSV-1 (qualia 16D per-dim assignment) before D-CSV-2 / D-CSV-5 spawn

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS


Generated by Claude Code

claude added 2 commits May 16, 2026 01:30
…layout + signed-mantissa NARS + CollapseGateEmission

Wave-A sprint-11 work landing the substrate primitives from
`cognitive-substrate-convergence-v1.md` §6 Option F locked layout.
Two parallel Sonnet workers (CCA2A); main-thread P0 fix on the
pack() temporal-corrupts-reclaim-zone bug found in code review.

OQ ratifications absorbed in this PR:
- OQ-CSV-2 = 6 bits (64-corpora W-slot) per default
- OQ-CSV-1 / OQ-CSV-4 deferred to Wave B (D-CSV-2 / D-CSV-5)

D-CSV-1 — causal-edge v2 layout (W-A1, causal-edge crate)
- NEW `crates/causal-edge/src/layout.rs` (~130 LOC): all shift constants
  (S=0, P=8, O=16, FREQ=24, CONF=32, CAUSAL=40, DIR=43, INFER=46,
  PLAST=50, W=53, TRUTH=59, SPARE=61); BITS4/6/2 masks + per-field
  masks; `#[deprecated] V1_TEMPORAL_SHIFT`; compile-time
  `_LAYOUT_COVERAGE` const-assert (8+8+8+8+8+3+3+4+3+6+2+3 = 64);
  `TrustTexture` enum with `from_bits_2`/`to_bits_2`.
- EXTEND `edge.rs`: v2 accessors `inference_mantissa` (i4 signed,
  arithmetic-shift sign-extend), `w_slot`, `truth`, `truth_raw`,
  `spare`, `with_routing(w, t)` (NO `g` param per L-3); v2 `pack_v2()`
  8-arg constructor (no temporal); `#[deprecated]` markers on v1
  `inference_type()` and `temporal()` accessors.
- NEW `v2_layout_tests.rs` (~200 LOC): 16 tests covering all v2
  accessor round-trips, field-isolation matrix, signed-mantissa pack
  /unpack across [-8, -7, -1, 0, 1, 7], 2-arg with_routing, spare
  isolation, mantissa↔plasticity boundary, size_of == 8.
- Cargo bump 0.1.0 → 0.2.0; `default = ["causal-edge-v2-layout"]`
  feature flag.

D-CSV-3 — signed-mantissa InferenceType expansion (W-A1, same crate)
- `InferenceType::to_mantissa(self) -> i8` and `from_mantissa(m: i8)
  -> Self` provide the bidirectional v2 mapping while keeping the
  enum intact for v1 callers; PR-LL-1 Intervention/Counterfactual
  absorb into mantissa magnitude 5/6 per L-9.

D-CSV-4 — CollapseGateEmission (W-A2, contract crate)
- NEW `pub type MailboxId = u32;` — canonical W-slot corpus-root
  handle / mailbox addressing surface.
- NEW `CollapseGateEmission { batons: Vec<(u16, u64)>, source_mailbox,
  chain_position, merge_mode }`. Architectural deviation from plan
  §8.1 documented inline: `Vec<(u16, u64)>` instead of
  `SmallVec<[(u16, CausalEdge64); 8]>` to preserve contract zero-dep
  invariant; SmallVec inline-storage optimization deferred to
  sprint-12+. Receivers wrap raw u64 back via `CausalEdge64(raw)`.
- API: `new`, `push_baton`, `baton_count`, `wire_cost_bytes`
  (13 + 10 × N batons matching plan §8.2), provenance accessors;
  NO `cycle_id` field (provenance via source_mailbox + chain_position
  per §8.1).
- 8 tests cover empty emission, push, wire-cost-budget assertion at
  8 batons (= 93 bytes per §8.2), provenance round-trip, all 4
  merge modes (Xor/Bundle/Superposition/AlphaFrontToBack).

P0 fix (main-thread code review caught)
- `pack()` v1 9-arg constructor with v2 feature on was writing
  `temporal << 52` into the v2 reclaim zone (bit 52 = plasticity[2],
  bits 53-58 = W, 59-60 = lens, 61-63 = spare). Same root cause as
  the W3 spec codex P1 from PR #381: v1 temporal aliases the v2
  reclaim zone. Fixed by feature-gating the temporal write so v2
  pack silently drops the temporal arg (with doc-comment migration
  pointer to pack_v2). Two v1-only tests (`test_roundtrip`,
  `test_temporal_in_msb_gives_sort_order`) gated on
  `#[cfg(not(feature = "causal-edge-v2-layout"))]`.

Test status
- causal-edge v2 (default): 30 pass / 1 fail (test_build_fast,
  pre-existing on main per stash-revert check — to be filed in
  ISSUES separately).
- causal-edge v1 (no default features): 16 pass / 1 fail
  (same pre-existing test_build_fast).
- lance-graph-contract: 8/8 collapse_gate tests pass.
- p64-bridge / lance-graph-planner: clean compile with deprecation
  warnings on `inference_type()` and `temporal()` — the intended
  migration signal for downstream callers.

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
…PR + AGENT_LOG entry

Per CLAUDE.md §Mandatory Board-Hygiene Rule (and E-META-9 main-thread-
sentinel recommendation from PR #382): board updates in the SAME PR as
the work commit `ab39d01`.

STATUS_BOARD.md — Phase A table: D-CSV-1 / D-CSV-3 / D-CSV-4 transition
Queued → **In PR** with branch + commit reference + OQ-CSV-2 ratification
note (6 bits per default).

AGENT_LOG.md — PREPEND sprint-11-wave-a-impl fleet entry. Documents
2-worker CCA2A parallel run, the P0 found in main-thread code review
(v1 pack() corrupting v2 reclaim zone — same root cause as the W3 codex
P1 from PR #381), and the test status across both feature configurations.
Notes pre-existing `test_build_fast` failure for separate ISSUES filing.

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fd61310111

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread crates/causal-edge/src/edge.rs
Comment thread crates/causal-edge/src/edge.rs
Comment thread crates/causal-edge/src/edge.rs
claude added 5 commits May 16, 2026 01:37
…ck semantic-routing bugs

Codex review on PR #383 surfaced three semantic-routing bugs all
sharing the root cause of "v1 API path bypasses v2 mantissa /
reclaim-zone semantics". Same anti-pattern as the W3 spec codex P1
from PR #381. All three fixed + paired with regression tests.

P1 #1 — forward() decoded weight.inference_type() (3-bit unsigned)
even under v2, so a v2 edge built with `with_inference_mantissa(-1)`
(Abduction direction) would read bits 46-48 as 0b111 = Reserved7 and
dispatch through the synthesis/default branch instead of Abduction.
Negative mantissas (Abduction, Counterfactual) silently produced
wrong NARS truth propagation.

Fix: under `causal-edge-v2-layout`, decode via
`InferenceType::from_mantissa(weight.inference_mantissa())` for the
match arm. Result re-stamped via `with_inference_mantissa(
resolved_infer.to_mantissa())` so the sign bit (49) survives pack()'s
v2 mantissa write (pack() needs the v1 enum value but to_mantissa()
maps it through correctly — see P2 fix below).

P1 #2 — set_temporal() unconditionally wrote bits 52-63 even under
v2 where those bits are plasticity[2] + W-slot + lens + spare. The
v1 learn() path calls set_temporal(current_time) after every
observation; that call clobbered W-slot routing state and corrupted
the reclaim zone for any edge that had been stamped via with_w_slot/
with_truth/etc. Same root cause as the pack() temporal-write bug
fixed in commit ab39d01 — just a different setter path that wasn't
gated.

Fix: feature-gate set_temporal() the same way as pack(): under v2,
the call is a complete no-op (the `t: u16` arg is silently dropped
with documented migration pointer to chain-position + AriGraph
Triplet.timestamp). learn() transitively becomes safe under v2 since
the only reclaim-zone write was the set_temporal call.

P2 — pack() under v2 wrote the raw `inference as u8` discriminant
into bits 46-48 (3-bit mask). With the v1 enum:
- Deduction=0, Induction=1, Abduction=2, Revision=3, Synthesis=4
- pack(Abduction) → bits 46-48 = 0b010, bit 49 = 0
- inference_mantissa() reads 4 bits as i4 → +2
- from_mantissa(+2) decodes as Induction, NOT Abduction

Silent semantic drift on every v2 pack() call for any non-Deduction
inference type.

Fix: under v2, pack() writes `inference.to_mantissa() as i4` (4 bits
including sign) so the round-trip pack→inference_mantissa→
from_mantissa preserves the semantic. The v1 branch keeps the
original 3-bit discriminant write for back-compat. forward()'s
final re-stamp (P1 #1 fix) covers the case where the resolved
InferenceType needs to be re-encoded after composition.

Three regression tests added to `v2_layout_tests.rs`:
- `test_forward_decodes_negative_mantissa_under_v2` — Abduction via
  mantissa=-1 must NOT alias Reserved7
- `test_set_temporal_no_op_under_v2` — set_temporal(1023) on an edge
  with w=42/truth=Fuzzy/spare=0b101 must leave the raw u64 unchanged
- `test_pack_uses_mantissa_mapping_under_v2` — pack(Abduction),
  pack(Counterfactual), pack(Intervention) all round-trip through
  inference_mantissa → from_mantissa with semantic identity preserved

Test status post-fix:
- v2 (default): 33 pass / 1 pre-existing fail (test_build_fast)
- v1 (no features): 16 pass / 1 pre-existing fail
- The 3 new regression tests prevent silent re-introduction

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
… v2 must route through from_mantissa()

Two tests in `crates/lance-graph/tests/intervene_counterfactual.rs`
failed CI after the codex P2 fix (`pack()` writes `to_mantissa()`
under v2):

- `causal_edge_intervention_roundtrip` expected Intervention, got
  Counterfactual
- `causal_edge_counterfactual_roundtrip` expected Counterfactual,
  got Abduction

Root cause: the deprecated v1 `inference_type()` accessor read bits
46-48 as a 3-bit unsigned discriminant. Under v2, pack() writes the
signed mantissa (4 bits, bits 46-49) via `to_mantissa()`, so reading
back through the v1 3-bit accessor silently swapped variants:

- pack(Intervention) → mantissa = +6 = 0b0110
- inference_type() reads 0b110 = 6 → Counterfactual (wrong)

- pack(Counterfactual) → mantissa = −6 = 0b1010
- inference_type() reads 0b010 = 2 → Abduction (wrong)

Fix: `inference_type()` and `set_inference_type()` under v2 route
through `from_mantissa(inference_mantissa())` and `to_mantissa()`
respectively. This preserves the v1 API contract semantically: every
v1 enum variant round-trips through pack/inference_type because the
mantissa table is bijective for the v1 enum (Deduction=+1, Induction
=+2, Abduction=−1, Revision=+4, Synthesis=+5, Intervention=+6,
Counterfactual=−6, Reserved7=+7).

Same family as the prior 3 codex P1s in commit 42b3215: every v1 API
path under v2 must transparently route through the mantissa mapping
or be feature-gated to no-op. The pattern is now firmly established
and could be lifted into a `LegacyInferenceAccess` trait if more v1
accessors surface — for now the per-method gating is fine.

No new tests needed: the failing CI tests in
`tests/intervene_counterfactual.rs` (causal_edge_intervention_roundtrip
+ causal_edge_counterfactual_roundtrip) become the regression gate
for this fix; they were already in the suite and re-pass with this
patch (local: `cargo test -p lance-graph --test
intervene_counterfactual` exit 0).

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
User request: harvest WoA/app.py routes as CSV+JSON, commit as
cross-repo reference in lance-graph/.claude. Source is the 2,904-line
Flask backend at /home/user/WoA/app.py (Acme Services GmbH WoA app,
mandantenfähig).

Harvester: pure-static Python `ast.parse` walker that recognizes
@app.route(path, methods=[...]) plus Flask 2.x .get/.post/.put/.delete
/.patch/.options/.head decorator shortcuts. Extracts path, methods,
handler name, decorator chain (@login_required etc.), enclosing
function context (usually create_app per WoA's app-factory pattern),
docstring first line, and source line number.

Result: 96 routes captured (60 with GET, 59 with POST; many serve
both). Sorted by (path, methods) for deterministic diffs.

Files:
- .claude/knowledge/woa-routing/routing-table.json (~1.3K lines, full detail)
- .claude/knowledge/woa-routing/routing-table.csv (~97 lines, flat for spreadsheet)
- .claude/knowledge/woa-routing/README.md (harvester contract, refresh procedure, use cases)

Use cases per the README:
- Cross-repo audit (grep here, jump to WoA/app.py:<line>)
- Membrane wiring planning (callcenter / sharepoint / spear / q2)
- Sprint planning for lance-graph ↔ WoA integration

Not a live runtime extraction (no app.url_map introspection) — pure
AST. Decorators computed at runtime (e.g. dynamic path expressions)
are skipped silently. Refresh by re-running the heredoc-embedded
harvester when WoA/app.py changes meaningfully.

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
…route mirror from WoA PR #33

User pointed at WoA PR #33 (merged 2026-05-16) which already harvested
the full WoA routing surface — 514 routes across `app.py` (91 routes
in the monolith) + 53 blueprint modules under `woa/blueprints/*.py`.

The prior commit in this branch (87f5076) harvested only the
2,904-line app.py via a local AST walker and captured 96 routes —
the monolith remnant only, missing the entire modular blueprint
architecture (423 routes). That harvest is now superseded by this
canonical mirror.

Mirror fetched via `mcp__github__get_file_contents` against
AdaWorldAPI/WoA `.claude/reference/routing_table.{json,csv}`, with
the MCP response wrapper (the "[Resource from github at repo://..."
prefix and the surrounding `[{"type":"text", "text":...}]` envelope)
stripped.

Schema per WoA PR #33:
  endpoint / function / path / methods / source_file / line /
  blueprint / cluster

Coverage: 514 of 515 runtime routes; the delta is Flask's auto
`/static/` rule (no decorator → invisible to AST).

README updated to:
- name WoA PR #33 as the canonical source
- document the mirror schema + refresh procedure
- record the supersession history (96 partial → 514 canonical) so
  future sessions don't reinvent the partial harvest
- list the cross-repo use cases (membrane wiring planning, route-
  disappearance audit across refactors, etc.)

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
Pre-existing formatting drift in two files surfaced when CI upgraded
to rustfmt 1.95.0. Pure mechanical reformat via
`cargo fmt --manifest-path crates/lance-graph/Cargo.toml`. Not a
behavioral change; just unblocks the rustfmt-check CI step on PR #383.

Files:
- crates/lance-graph/src/graph/arigraph/triplet_graph.rs:723 — multi-line
  filter() collapsed to single-line per rustfmt 1.95 default
- crates/lance-graph/tests/intervene_counterfactual.rs:184 — assert_ne!
  expanded across multiple lines per rustfmt 1.95 default

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
@AdaWorldAPI AdaWorldAPI merged commit 03bd175 into main May 16, 2026
5 checks passed
AdaWorldAPI pushed a commit that referenced this pull request May 16, 2026
…cation (Option α)

Wave-B sprint-11 Phase A substrate primitive: i4-16D packed qualia
vector (8 bytes, 9× compression vs the historical [f32; 18]) for the
upcoming `QualiaColumn` migration (D-CSV-5, Wave C).

OQ-CSV-1 ratification (autoattended)
The plan §7.2 proposed a felt-qualia vocab (Wisdom/Trust/Hope/etc.).
Cross-check against the canonical surfaces revealed:
- `crates/thinking-engine/src/qualia.rs::Qualia17D` uses convergence
  observables (arousal/valence/tension/warmth/clarity/boundary/depth/
  velocity/entropy/coherence/intimacy/presence/assertion/receptivity/
  groundedness/expansion/integration)
- `crates/lance-graph-contract/src/qualia.rs::QualiaVector = [f32; 17]`
  uses the same labels (`AXIS_LABELS`)
The plan footnote already flagged §7.2 as CONJECTURE pending qualia-
engineer cross-check. Ratified as Option α: keep the canonical
observable vocab, drop dim 16 "integration" to fit 16 i4 lanes
(integration is recoverable on demand from valence + coherence +
last cycle delta). Lower migration risk than a vocab swap.

D-CSV-2 implementation (W-B1, Sonnet)
- NEW `QUALIA_I4_DIMS: usize = 16` constant
- NEW `QUALIA_I4_LABELS: [&str; 16]` matching `AXIS_LABELS[0..16]`
- NEW `pub struct QualiaI4_16D(pub u64) #[repr(C, align(8))]` —
  exactly 8 bytes, 16 i4 lanes
- Accessors `get(dim) -> i8` / `set(dim, value)` / `with(dim, value)`
  with i4 signed pack/unpack via `(raw << 4) >> 4` arithmetic-shift
  sign-extension; clamp to −8..+7; defensive no-op on out-of-range dim
- Migration helpers `from_f32_17d(&QualiaVector) -> Self` and
  `to_f32_17d(self) -> QualiaVector`. Asymmetric quantization
  intentional: positive f32 × 7.0 (7 quanta in i4 [0, +7]); negative
  f32 × 8.0 (8 quanta in i4 [-8, -1]). Dim 16 ("integration") is
  dropped on encode and zero-filled on decode.
- `magnitude(self) -> i8` = `coherence.saturating_mul(valence)` —
  per plan §7.2 "Wisdom × Staunen → i8" intent, mapped to canonical
  vocab pair (intensity × valence-direction). One i8 multiply,
  SIMD-friendly.

8 new tests in `cargo test -p lance-graph-contract qualia`:
- size invariant (8 bytes)
- zero default (all dims = 0)
- signed roundtrip across [-8, -7, -1, 0, 1, 7]
- clamp on overflow (+100 → +7, -100 → -8)
- field isolation (writing dim 5 leaves dims 4, 6 untouched)
- from_f32_17d ↔ to_f32_17d round-trip with dim 16 dropped
- label alignment with `AXIS_LABELS[0..16]`
- magnitude saturating_mul correctness on extremes

Test status: 14/14 pass (8 new + 6 pre-existing). Contract crate
remains ZERO deps.

Board hygiene (per E-META-9 main-thread sentinel)
- STATUS_BOARD.md — D-CSV-2 row Queued → **In PR** with branch
  reference + OQ-CSV-1 ratification note
- AGENT_LOG.md — PREPEND wave-B fleet entry with the OQ-CSV-1
  ratification reasoning + 8-test coverage detail + open question
  on Wave C (D-CSV-5 needs cognitive-shader-driver crate which is
  referenced in CLAUDE.md but not in workspace members; investigation
  required before spawn)

Wave C dependencies (deferred to next loop iteration)
- D-CSV-5 (QualiaColumn migration in cognitive-shader-driver) — needs
  PR #383 merged (so v2 layout is on main) AND clarification on
  cognitive-shader-driver workspace membership
- D-CSV-6 (WitnessCorpus replacing SpoWitnessChain<32>) — depends on
  D-CSV-4 from PR #383
- D-CSV-7 (MailboxSoA integration) — depends on D-CSV-1 + D-CSV-4

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI pushed a commit that referenced this pull request May 16, 2026
Pre-existing assert_eq! macro single-line forms in W-D2's
witness_corpus.rs tests need multi-line wrapping per rustfmt 1.95
defaults. Pure mechanical reformat via `cargo fmt --manifest-path
crates/lance-graph/Cargo.toml`. No behavior change; 8/8 witness
tests still pass.

Same fmt-gate pattern as PR #383 (rustfmt 1.95 upgrade) and PR #384
(qualia.rs single-line guards).

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI pushed a commit that referenced this pull request May 16, 2026
…ate-decisions knowledge doc

W-F10 — Sprint-11 meta-review (.claude/board/sprint-log-11/meta-review.md, 341 lines)
- Executive summary + sprint grade
- Per-PR grades for waves A-E (PRs #383..#387)
- Cross-sprint inconsistencies (CSI-1..6): TrustTexture ×2, v1-API-
  under-v2 alias anti-pattern (E-META-10 candidate), subagent
  permission isolation, SplatField/QualiaI4 bit-compat mirrors, plan
  §7.2 CONJECTURE-vs-FINDING ratification (OQ-CSV-1), bg-worker
  file-collision pattern
- Sprint-12 spawn decision YES with merge gates on Wave F + open
  PRs (#385 #386); recommended sprint-12 phase scope = SIMD vec for
  D-CSV-8 + ndarray streams productization + on-Think method
  migration for D-CSV-12 + Jirak-derived Σ10 threshold (TD-7)
- Per-worker grade placeholders for Wave F (W-F1..W-F12) — to be
  filled by the Opus meta-reviewer (W-Meta-Opus) when the fleet
  fully completes

W-F11 — i4-substrate-decisions knowledge doc (.claude/knowledge/, 200 lines)
- Tier-1 knowledge doc with READ BY: header
- i4 substrate doctrine: sign = direction, |magnitude| = NARS rule
  slot; i4 × i4 → i8 precision family
- All 20 locked decisions L-1..L-20 with one-sentence summary +
  shipping PR + canonical code site + deviations from plan
- Four-column SoA (EdgeColumn / QualiaColumn / MetaColumn /
  FingerprintColumns) — sprint-11 outcomes per column
- All six OQ-CSV-* ratifications recorded with wave evidence
- Codex P1 anti-pattern: 5 documented v1-API-under-v2-feature
  aliasing instances (temporal write, inference_type read,
  set_temporal no-op, pack raw discriminant, W3 spec temporal=1023)
- 12-mapping transcoder table (8 channels × NARS slots × Pearl
  rungs) with lossy-collapse equivalence classes
- Cross-refs: plan v1 + sprint-log-10/11 meta-reviews + STATUS_BOARD
  + PR_ARC + AGENT_LOG + TECH_DEBT + EPIPHANIES + TYPE_DUPLICATION_MAP
  + CLAUDE.md iron rules

Fleet status: 11 of 12 Sonnet workers complete; W-F12 (plan v2 draft)
still in flight. W-Meta-Opus (1 honest cross-cutting reviewer) dispatch
deferred until W-F12 finalizes.

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI pushed a commit that referenced this pull request May 16, 2026
Pre-existing assert_eq! macro single-line forms in W-D2's
witness_corpus.rs tests need multi-line wrapping per rustfmt 1.95
defaults. Pure mechanical reformat via `cargo fmt --manifest-path
crates/lance-graph/Cargo.toml`. No behavior change; 8/8 witness
tests still pass.

Same fmt-gate pattern as PR #383 (rustfmt 1.95 upgrade) and PR #384
(qualia.rs single-line guards).

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI pushed a commit that referenced this pull request May 16, 2026
… lines)

W-F12 final Sonnet worker output. Plan v2 revision capturing sprint-
11 outcomes + sprint-12 forward plan.

Mirrors v1 structure with §0..§18; every changed section marked
[UPDATED 2026-05-16] / 🆕 vs v1 (21 annotations); unchanged sections
labeled UNCHANGED from v1.

Highlights:
- §0 status delta — Phase A/B/C outcomes: D-CSV-1/3/4 (#383), D-CSV-2
  (#384), D-CSV-5a/6a+7 (#385/#386), D-CSV-8+9 (#387), D-CSV-10
  (W-F1)
- §5 L-1..L-20 implementation-outcome annotations (PR #+commit+
  accessor file per row)
- §6/§8 UNCHANGED architecture, annotated with shipping commits +
  TD pointers for deviations (SmallVec)
- §11 D-CSV-* table — D-CSV-1..12 status; D-CSV-13/14/15 NEW Phase E
  sprint-12 entries (SIMD vec, on-Think method migration, Jirak Σ10)
- §12 OQ table — all 6 OQs annotated with ratification
- §13 Risk — 10 risks (vs 6 in v1); §13.7–13.10 new from sprint-11
  observations (subagent isolation, E-META-10 alias, two-TrustTexture)
- §15-§16 phasing + test growth — sprint-11 confirmed ~58 tests;
  sprint-12 projected ~70+

Fleet status: **12 of 12 Sonnet workers complete.** Honest cross-
cutting Opus meta-review (W-Meta-Opus) dispatched next.

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI pushed a commit that referenced this pull request May 16, 2026
…sprint-12 meta + board refresh + OQ catalog

Five more Opus planners landed:

PP-4 (Opus): `pr-sprint-13-think-methods.md` (674 LOC) — D-CSV-14
spec for splat-ops on Think carrier. Found: zero external callers of
the 4 free fns (deprecation cycle is conservative not forcing); Think
struct doesn't exist yet (sprint-13 introduces minimum-viable with
splat_field + cycle; sprint-15+ accretes trajectory/awareness/etc).

PP-5 (Opus): `pr-sprint-13-witness-cam-pq.md` — D-CSV-16 spec for
real ndarray CAM-PQ wiring replacing the Wave G HashMap placeholder.

PP-7 (Opus): `.claude/board/sprint-log-12/meta-review.md` — sprint-12
closing meta-review.

PP-10 (Opus): LATEST_STATE.md (+50 lines) + STATUS_BOARD.md (+15
lines) refresh. 7 new "Recently Shipped" PR rows (#383-#389),
19+ new contract types in inventory, sprint-13 queued specs surfaced.
Phase A/B/C marked Shipped; Phase D partial; Phase E (sprint-13)
section added.

PP-11 (Opus): `.claude/board/sprint-log-13/oq-catalog.md` — 13 OQs
(OQ-CSV-7..19); 10 block sprint-13 spawn; 3 sprint-14+ tracking
(ndarray PR #116 pin/vendor, VAMPE+Jirak scope, splat persistence).

7 of 12 PP planners done. 5 still in flight (PP-2 iron-rules done
separately; PP-6 SIMD spec, PP-9 PR_ARC backfill, PP-12 cross-repo
audit pending).

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI pushed a commit that referenced this pull request May 16, 2026
…ntries (#383..#390)

PP-9 (Opus) prepended 8 PR entries to PR_ARC_INVENTORY.md (1537→1903
lines, +366 / +50,619 bytes). APPEND-ONLY rule respected — no prior
entries touched. Top→bottom reverse chronological:

#390 sprint-12/wave-G (In PR, `bad0875`) — grade A−. D-CSV-5b cutover
   + D-CSV-6b WitnessCorpus + D-CSV-13 batch + D-CSV-15 Jirak math.
#389 sprint-12 wave-F codex P2 follow-up — AttentionMaskBackend impl
   + canonical MailboxId (CSI-10).
#388 sprint-12 Wave F fleet (12 Sonnet + 1 Opus) — grade B. D-CSV-
   10/11/12 scaffolds + AttentionMask + plan v2.
#387 sprint-11 Wave E — grade A−. D-CSV-8 MUL i4 scalar + D-CSV-9
   8-channel transcoder (Option R-3).
#386 sprint-11 Wave D — grade B+. D-CSV-7 MailboxSoA + D-CSV-6a
   WitnessCorpus core.
#385 sprint-11 Wave C — grade B+. D-CSV-5a sibling QualiaI4Column.
#384 sprint-11 Wave B — grade A. D-CSV-2 QualiaI4_16D + OQ-CSV-1
   Option α ratification.
#383 sprint-11 Wave A — grade A−. D-CSV-1 v2 layout + D-CSV-3 signed
   mantissa + D-CSV-4 CollapseGateEmission.

Every entry mirrors the #381/#379 template — Header / Confidence /
Added / Locked / Deferred / Docs / Cross-refs — with forward+backward
linkages (#383#385#390 D-CSV-5 chain; E-META-10 catch in #383 →
iron-rule promotion in #390 W-G5; etc.).

Total PR headers in file: 28 (was 20). 13 of 14 planners done.
Only PP-13 (brutally-honest-tester agent) still in flight.

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI pushed a commit that referenced this pull request May 16, 2026
PP-13 (Opus) — `.claude/agents/brutally-honest-tester.md` (708 LOC,
29.6 KB). User-requested agent that bundles the stable-Rust toolchain
into a strict pre-merge gate plus codex-style P1 anticipation.

Structure:
- YAML frontmatter (model: opus; tools: Read/Glob/Grep/Bash)
- Mandatory reads Tier 0/1/2 (iron-rules-doctrine PP-2 + sprint-log
  meta-reviews + worker-template-v2 §5.5/§9 + diff-triggered domain
  knowledge docs)
- §1 Toolchain across 5 tiers: Mandatory (clippy + fmt + audit + deny),
  Strict (clippy pedantic/nursery), Recommended (machete + geiger +
  semver-checks + outdated), Targeted (spellcheck + public-api + bloat
  + nextest), Formal-ish (kani + loom). Explicit non-fit: Miri / fuzz /
  mutants (nightly or heavy)
- §2 Codex P1 catalogue AP1..AP8 (v1-under-v2-alias / bit-collision /
  sub-crate [workspace] / lib.rs orphan / cross-repo mod.rs orphan /
  new-abstraction / unsafe-without-SAFETY / REST-endpoint-drift). Each
  pattern documents grep targets + rule + suggested fix + sprint
  instance citation (CSI-2/7/8/9 etc.)
- §3 Output format — markdown verdict block with P0/P1/P2 lists +
  toolchain rollup + anti-pattern rollup + ternary LAND/HOLD/REJECT
- §4 Workflow integration — CCA2A slot post-impl pre-meta-review;
  draft `.github/workflows/honest-tester.yml` (flagged as D-CSV-18)
- §5 BOOT.md Tier-1 trigger row
- §6 Promotion ceremony (3 gates + 1 false-positive + 1 missed-bug)
- §7 Cross-refs
- §8 "One sentence that should survive any refactor" + authorship

Mirrors `truth-architect.md` + `certification-officer.md` format
precedent. Cites sprint-11 meta-review-opus CSI-2 (the 4-instance
PR #383 cluster that drove I-LEGACY-API-FEATURE-GATED promotion),
sprint-12 CSI-7/8/9 (orphan-pattern that motivated worker-template-v2),
worker-template-v2 §5.5+§9 (the IMPL-side discipline this REVIEW agent
mirrors).

ALL 14 PP planners complete (12 original + PP-2 iron-rules-doctrine
ran early + PP-13 brutally-honest-tester added mid-fleet per user
request). W-Meta-Opus honest review dispatch next.

https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants